package dao.annotations;

import java.util.List;

import org.hibernate.Query;
import org.hibernate.Session;
import negocio.Cliente;
import negocio.Producto;
import dao.interfaces.IDAOCliente;
import filtros.FiltroCliente;

public class DAOCliente extends SDAO<Cliente, Integer, FiltroCliente> implements
		IDAOCliente {
		
	@SuppressWarnings("unchecked")
	public List<Producto> listarProductos() {
		List<Producto> ls = null;
		try {
			Session session = DAO.obtenerSession();
			ls = session.createQuery("from Producto").list();
		} catch (Exception e) {
			e.printStackTrace();
		}finally {
			if (isMustCloseSession())
				closeSession();
		}
		return ls;

	}

	@Override
	public Cliente obtenerClientePorCuit(String cuit) throws Exception {
		Cliente cli = new Cliente();
		Session ss = DAO.obtenerSession();
		String q = "from Cliente where cuit= :cuit";
		Query query = ss.createQuery(q).setParameter("cuit", cuit);
		cli = (Cliente) query.uniqueResult();
		if (isMustCloseSession())
			closeSession();
		return cli;
	}

	public Integer obtenerCodigoCotizacion (){
		Session ss = obtenerSession();
		String q = "select max(codigo) from Pedido";
		Query query = ss.createQuery(q);
		if (isMustCloseSession())
			closeSession();
		return (Integer) query.uniqueResult();
	}
}
